Disk drive booting from volatile semiconductor memory when exiting power save mode

ABSTRACT

A disk drive is disclosed comprising a head actuated over a disk, a first volatile semiconductor memory (VSM), and a second VSM. When the disk drive is powered on, control circuitry first reads VSM initialization code from the disk, first initializes the first VSM using the VSM initialization code, stores the VSM initialization code in the second VSM, and then enters a power save mode. When exiting the power save mode, the control circuitry second initializes the first VSM using the VSM initialization code stored in the second VSM.

BACKGROUND

Disk drives comprise a disk and a head connected to a distal end of anactuator arm which is rotated about a pivot by a voice coil motor (VCM)to position the head radially over the disk. The disk comprises aplurality of radially spaced, concentric tracks for recording user datasectors and servo sectors. The servo sectors comprise head positioninginformation (e.g., a track address) which is read by the head andprocessed by a servo control system to control the velocity of theactuator arm as it seeks from track to track.

A disk drive typically comprises a boot read only memory (ROM) forstoring boot code used to boot the disk drive when initially powered on.The boot code typically includes a disk initialization procedure toenable control circuitry to read additional boot code form the disk. Theboot code read from the disk typically includes a volatile semiconductormemory (VSM) initialization procedure to initialize a VSM such as adouble data rate (DDR) random access memory (RAM). Once the VSM isinitialized, the remaining boot code is read from the disk into the VSMand then executed from the VSM in order to finish booting the diskdrive.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A shows a disk drive according to an embodiment of the presentinvention comprising a head actuated over a disk, and first and secondvolatile semiconductor memories (VSMs).

FIG. 1B is a flow diagram according to an embodiment of the presentinvention wherein prior to entering a power save mode, VSMinitialization code for initializing the first VSM is stored in thesecond VSM and used to reinitialize the first VSM when exiting the powersave mode.

FIG. 2A shows an embodiment of the present invention wherein the firstVSM comprises a double data rate (DDR) random access memory (RAM), andthe second VSM comprises always on domain (AOD) registers within asystem on a chip (SOC).

FIG. 2B is a flow diagram according to an embodiment of the presentinvention wherein the VSM initialization code is read from the disk whenthe disk drive is powered on.

FIGS. 3A and 3B show a flow diagram according to an embodiment of thepresent invention wherein disk drive boot code is stored in the firstVSM prior to entering the power save mode and then used to boot the diskdrive when exiting the power save mode.

FIG. 4 is a flow diagram according to an embodiment of the presentinvention wherein the VSM initialization code is stored in the AODregisters as address/value pairs.

FIG. 5 is a flow diagram according to an embodiment of the presentinvention wherein the VSM initialization code is stored in the AODregisters, and then copied to the internal RAM of the SOC when exitingthe power save mode.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

FIG. 1A shows a disk drive according to an embodiment of the presentinvention comprising a head 2 actuated over a disk 4, a first volatilesemiconductor memory (VSM) 6, and a second VSM 8. The disk drive furthercomprises control circuitry 10 operable to execute the flow diagram ofFIG. 1B, wherein when the disk drive is powered on (step 12), thecontrol circuitry first reads VSM initialization code from the disk(step 14), first initializes the first VSM using the VSM initializationcode (step 16), stores the VSM initialization code in the second VSM(step 18), and then enters a power save mode (step 20). When exiting thepower save mode (step 22), the control circuitry second initializes thefirst VSM using the VSM initialization code stored in the second VSM(step 24).

In the embodiments of the present invention, the first VSM 6 must beinitialized before it may be accessed when the disk drive is powered on,as well as after exiting the power save mode. The fist VSM may beinitialized, for example, by initializing an internal state machineand/or user-defined operating parameters. In an embodiment described ingreater detail below, the first VSM may be initialized by writingcontrol values to specific registers within the first VSM. Theinitialization sequence typically varies based on the vendor of thefirst VSM which means the VSM initialization code is typically notstored in a read only memory (ROM) such as a boot ROM but insteadwritten to the disk. In this manner, the same boot ROM may be installedin a number of disk drives regardless as to the type of first VSMinstalled. When the disk drive is powered on, the VSM initializationcode is read from the disk and used to initialize the first VSM. Asdescribed in greater detail below, in the embodiments of the presentinvention the latency of spinning up the disk when exiting the powersave mode is avoided by storing the VSM initialization code in thesecond VSM prior to entering the power save mode.

Any suitable first VSM 6, second VSM 8, and control circuitry 10 may beemployed in the embodiments of the present invention. FIG. 2A shows anembodiment wherein the control circuitry 10 comprises a system on a chip(SOC) 26 comprising a processor 28, an internal RAM 30, and an always ondomain (AOD) 32 comprising refresh logic 34 and a plurality of AODregisters 36. In this embodiment, the second VSM comprises a pluralityof the AOD registers 36. The AOD of FIG. 2A remains powered when thedisk drive enters the power save mode so that the AOD registers 36retain the VSM initialization code. In one embodiment, the refresh logic34 also periodically refreshes the first VSM while in the power savemode, wherein in the embodiment of FIG. 2A the first VSM comprises adouble data rate (DDR) RAM 38. The control circuitry in the embodimentof FIG. 2A further comprises a boot ROM 40 which stores initial bootcode for the disk drive, including the code that determines whether tofinish booting from the disk or from the first and second VSMs asdescribed below.

FIG. 2B is a flow diagram according to an embodiment of the presentinvention wherein when the disk drive is powered on (step 42), diskinitialization code is read from the boot ROM and executed in order toconfigure the control circuitry with parameters needed to access thedisk (step 44). The VSM initialization code is then read from the disk(step 46) and executed in order to initialize the first VSM (step 48).The VSM initialization code is also stored in the second VSM at step 50(such as the AOD registers 36 of FIG. 2A). When the disk drive enters apower save mode (step 52), at least part of the control circuitry ispowered down at step 54 (such as the processor 28 of FIG. 2A). Whenexiting the power save mode, the processor 28 is powered on and the VSMinitialization code stored in the second VSM (e.g., the AOD registers36) is executed in order to reinitialize the first VSM.

FIGS. 3A and 3B show a more detailed flow diagram according to anembodiment of the present invention, wherein when the disk drive ispowered on (step 56), the disk initialization code is read from the bootROM and executed (step 58). The control circuitry then spins up the disk(step 60), and waits for the disk to finish spinning up (step 62). TheVSM initialization code is then read from the disk and stored in theinternal RAM (step 64), and then executed from the internal RAM in orderto first initialize the first VSM (step 66). Disk drive boot code (bootcode needed to finish booting the disk drive) is then read from the diskand stored in the first VSM (step 68). The disk drive boot code storedin the first VSM is executed (step 70) in order to finish booting thedisk drive. The boot code is then purged from the first VSM in order tofree-up space in the first VSM (step 72).

Referring to FIG. 3B, when the disk drive is preparing to enter a powersave mode (step 74), the VSM initialization code is read from the diskand stored in the second VSM (step 76). In an alternative embodiment,the VSM initialization code may be stored in the second VSM at step 64of FIG. 3A, or the VSM initialization code may be stored in the firstVSM at step 64 and then copied to the second VSM prior to entering thepower save mode. The disk drive boot code (which was previously purged)is read from the disk and stored in the first VSM (step 78). The diskdrive then enters the power save mode by powering down at least theprocessor 28 and the internal RAM 30 of FIG. 2A (step 80). The first VSMremains powered during the power save mode, and while the disk driveremains in the power save mode (step 82), the fist VSM is periodicallyrefreshed (step 84), for example, by refresh logic 34 in the AOD 32 ofFIG. 2A.

When the disk drive exits the power save mode, the disk initializationcode is executed from the boot ROM (step 86). A determination is thenmade as to whether the control circuitry should continue booting fromthe disk (including whether to read the VSM initialization code from thedisk). For example, the control circuitry may evaluate a flag stored inthe AOD registers 36 to determine whether the VSM initialization code isstored in the second VSM and whether the disk drive boot code is storedin the first VSM (i.e., whether the disk drive is booting from power onor exiting a power save mode). If performing a power on boot, then theflow diagram of FIG. 3A is re-executed starting at step 60. If exitingthe power save mode, the first VSM is reinitialized using the VSMinitialization code stored in the second VSM (step 90). The flow diagramof FIG. 3A is then re-executed starting at step 70. That is, the diskdrive boot code is executed from the first VSM (step 70) which avoidsthe latency of waiting for the disk to spin up at step 60.

The VSM initialization code may be stored in the second VSM in anysuitable format. In one embodiment, the second VSM comprises a pluralityof AOD registers 36 (FIG. 2A) and the VSM initialization code is storedas a plurality of address/value pairs (an address in a first register,and a corresponding value in a second register). This embodiment isunderstood with reference to the flow diagram of FIG. 4, wherein whenthe disk drive is preparing to enter a power save mode (step 92), theVSM initialization code is read from the disk and stored in the AODregisters as address/value pairs (step 94). The disk drive boot code isalso read from the disk and stored in the first VSM (step 96), and apointer to the disk drive boot code is stored in an AOD register (step98). The disk drive then enters the power save mode by powering down atleast the processor 28 and the internal RAM 30 (step 100). While in thepower save mode (step 102), the refresh logic 34 periodically refreshesthe first VSM (step 104).

Upon exiting the power save mode, the disk initialization code isexecuted from the boot ROM (step 106). A flag is then evaluated (step108) to determine whether the VSM initialization code is stored in thesecond VSM. If so, a pointer is initialized (step 110) to the first AODregister that stores the address/value pairs. The first address is thenassigned the corresponding value stored in the next AOD register (step112). The register pointer is incremented (step 114), and the process isrepeated until all of the address/value pairs have been programmed (step116) and the first VSM is ready to be accessed. The disk drive boot codestored in the first VSM is then executed (starting from the pointersaved at step 98) in order to finish booting the disk drive (step 118).

FIG. 5 shows an alternative embodiment of the present invention, whereinwhen preparing to enter the power save mode (step 92), the VSMinitialization code is stored in the AOD registers as executable code.When exiting the power save mode, the VSM initialization code stored inthe AOD registers is copied (step 122) to the internal RAM 30 of the SOC26 (FIG. 2A). The processor 28 then executes the VSM initialization codefrom the internal RAM 30 in order to reinitialize the first VSM (step124).

In one embodiment, the VSM initialization code may be stored in thesecond VSM using any suitable error detection code (EDC) or any suitableerror correction code (ECC). When exiting the power save mode, the VSMinitialization code is first verified as being error free (or detectederrors are corrected). If the VSM initialization code cannot be verified(or errors corrected), then the disk drive is booted normally byspinning up the disk and reading the VSM initialization code from thedisk (step 64 of FIG. 3A). A similar EDC or ECC may be employed toverify the disk drive boot code stored in the first VSM when exiting thepower save mode, and if the verification fails, the disk drive boot codeis read from the disk (step 68 of FIG. 3A).

Any suitable control circuitry may be employed to implement the flowdiagrams in the embodiments of the present invention, such as anysuitable integrated circuit or circuits. For example, the controlcircuitry may be implemented within a read channel integrated circuit,or in a component separate from the read channel, such as a diskcontroller, or certain steps described above may be performed by a readchannel and others by a disk controller. In one embodiment, the readchannel and disk controller are implemented as separate integratedcircuits, and in an alternative embodiment they are fabricated into asingle integrated circuit or system on a chip (SOC). In addition, thecontrol circuitry may include a suitable preamp circuit implemented as aseparate integrated circuit, integrated into the read channel or diskcontroller circuit, or integrated into an SOC.

In one embodiment, the control circuitry comprises a microprocessorexecuting instructions, the instructions being operable to cause themicroprocessor to perform the steps of the flow diagrams describedherein. The instructions may be stored in any computer-readable medium.In one embodiment, they may be stored on a non-volatile semiconductormemory external to the microprocessor, or integrated with themicroprocessor in a SOC. In another embodiment, the instructions arestored on the disk and read into a volatile semiconductor memory whenthe disk drive is powered on. In yet another embodiment, the controlcircuitry comprises suitable logic circuitry, such as state machinecircuitry.

1. A disk drive comprising: a disk; a head actuated over the disk; afirst volatile semiconductor memory (VSM); a second VSM; and controlcircuitry operable to: when the disk drive is powered on, first read VSMinitialization code from the disk; first initialize the first VSM usingthe VSM initialization code; store the VSM initialization code in thesecond VSM; enter a power save mode; and when exiting the power savemode, second initialize the first VSM using the VSM initialization codestored in the second VSM.
 2. The disk drive as recited in claim 1,wherein when the disk drive is powered on the control circuitry isfurther operable to execute disk initialization code from a boot readonly memory (ROM) in order to enable the reading of the VSMinitialization code from the disk.
 3. The disk drive as recited in claim1, wherein: the control circuitry comprises a microprocessor operable toexecute the VSM initialization code; and the control circuitry isfurther operable to power down the microprocessor when entering thepower save mode.
 4. The disk drive as recited in claim 1, wherein thecontrol circuitry is further operable to refresh the first VSM while inthe power save mode.
 5. The disk drive as recited in claim 1, wherein inconnection with entering the power save mode the control circuitry isfurther operable to: second read the VSM initialization code from thedisk; and store the VSM initialization code in the second VSM aftersecond reading the VSM initialization code from the disk.
 6. The diskdrive as recited in claim 1, wherein after first initializing the firstVSM the control circuitry is further operable to: first read disk driveboot code from the disk and store the disk drive boot code in the firstVSM; first execute the disk drive boot code from the first VSM prior toentering the power save mode; and second execute the disk drive bootcode from the first VSM after second initializing the first VSM.
 7. Thedisk drive as recited in claim 6, wherein the control circuitry isfurther operable to: purge the disk drive boot code from the first VSMafter first executing the disk drive boot code; and prior to enteringthe power save mode, second read the disk drive boot code from the diskand store the disk drive boot code in the first VSM.
 8. The disk driveas recited in claim 1, wherein the second VSM comprises a plurality ofregisters.
 9. The disk drive as recited in claim 8, wherein the controlcircuitry is further operable to store the VSM initialization code inthe second VSM by storing an address in a first register and acorresponding value in a second register.
 10. The disk drive as recitedin claim 9, wherein the control circuitry is further operable to secondinitialize the first VSM by assigning the value stored in the secondregister to the address stored in the first register.
 11. The disk driveas recited in claim 8, wherein the control circuitry is further operableto second initialize the first VSM by copying the VSM initializationcode from the registers to an internal memory and executing the VSMinitialization code from the internal memory.
 12. A method of operatinga disk drive, the disk drive comprising a head actuated over a disk, afirst volatile semiconductor memory (VSM), and a second VSM, the methodcomprising: when the disk drive is powered on, first reading VSMinitialization code from the disk; first initializing the first VSMusing the VSM initialization code; storing the VSM initialization codein the second VSM; entering a power save mode; and when exiting thepower save mode, second initializing the first VSM using the VSMinitialization code stored in the second VSM.
 13. The method as recitedin claim 12, wherein when the disk drive is powered on furthercomprising executing disk initialization code from a boot read onlymemory (ROM) in order to enable the reading of the VSM initializationcode from the disk.
 14. The method as recited in claim 12, wherein: thedisk drive comprises a microprocessor operable to execute the VSMinitialization code; and further comprising powering down themicroprocessor when entering the power save mode.
 15. The method asrecited in claim 12, further comprising refreshing the first VSM whilein the power save mode.
 16. The method as recited in claim 12, whereinin connection with entering the power save mode further comprising:second reading the VSM initialization code from the disk; and storingthe VSM initialization code in the second VSM after second reading theVSM initialization code from the disk.
 17. The method as recited inclaim 12, wherein after first initializing the first VSM furthercomprising: first reading disk drive boot code from the disk and storingthe disk drive boot code in the first VSM; first executing the diskdrive boot code from the first VSM prior to entering the power savemode; and second executing the disk drive boot code from the first VSMafter second initializing the first VSM.
 18. The method as recited inclaim 17, further comprising: purging the disk drive boot code from thefirst VSM after first executing the disk drive boot code; and prior toentering the power save mode, second reading the disk drive boot codefrom the disk and storing the disk drive boot code in the first VSM. 19.The method as recited in claim 12, wherein the second VSM comprises aplurality of registers.
 20. The method as recited in claim 19, furthercomprising storing the VSM initialization code in the second VSM bystoring an address in a first register and a corresponding value in asecond register.
 21. The method as recited in claim 20, furthercomprising second initializing the first VSM by assigning the valuestored in the second register to the address stored in the firstregister.
 22. The method as recited in claim 19, further comprisingsecond initializing the first VSM by copying the VSM initialization codefrom the registers to an internal memory and executing the VSMinitialization code from the internal memory.